Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.11.2012, 17:56
Аватар для deivan
Профессор
Отправить личное сообщение для deivan Посмотреть профиль Найти все сообщения от deivan
 
Регистрация: 02.08.2012
Сообщений: 293

[обновлено] как послушать сокет и обработать его данные?
в оригинальной документации - ни одного примера, подскажите пожалуйста!..

мне нужно в приложениии node.js организовать модуль:
создать подключение к сокету вида ХОСТ:ПОРТ, отправить ему запрос, дождаться ответа, и ответ этот вернуть запрашивателю модуля.
если ошибка, то обработать и вернуть ошибку.

покажите пожалуйста, на примере?..

==============================================
Появилась необходимость усложнить задачу:
на сокет отправляется три запроса, нужно дождаться всех трех ответов и вернуть последний.

Последний раз редактировалось deivan, 26.11.2012 в 11:46.
Ответить с цитированием
  #2 (permalink)  
Старый 23.11.2012, 18:32
Аватар для keen
Профессор
Отправить личное сообщение для keen Посмотреть профиль Найти все сообщения от keen
 
Регистрация: 28.03.2012
Сообщений: 376

http://habrahabr.ru/post/127525/
http://habrahabr.ru/post/143162/
Ответить с цитированием
  #3 (permalink)  
Старый 23.11.2012, 18:55
Аватар для deivan
Профессор
Отправить личное сообщение для deivan Посмотреть профиль Найти все сообщения от deivan
 
Регистрация: 02.08.2012
Сообщений: 293

вот не зря я учу английский, вот ответ на мой вопрос,аллилуййааа:
http://www.hacksparrow.com/tcp-socke...n-node-js.html
Ответить с цитированием
  #4 (permalink)  
Старый 26.11.2012, 11:52
Аватар для deivan
Профессор
Отправить личное сообщение для deivan Посмотреть профиль Найти все сообщения от deivan
 
Регистрация: 02.08.2012
Сообщений: 293

Появилась необходимость усложнить задачу:
на сокет отправляется три запроса, нужно дождаться всех трех ответов и вернуть последний.

Не могу понять, как правильно организовать неблокирующее прослушивание -- когда я буду вызывать код обработки сокетного запроса, нужно дождаться ответ в основном модуле программы, как правильно подвесить коллбэк?..
Например, есть такой блок кода:
var HOST = '127.0.0.1';
var PORT = 6969;

var client = new net.Socket();
client.connect(PORT, HOST, function() {

    console.log('CONNECTED TO: ' + HOST + ':' + PORT);
    // Write a message to the socket as soon as the client is connected, the server will receive it as message from the client 
    client.write('I am Chuck Norris!');

});

// Add a 'data' event handler for the client socket
// data is what the server sent to this socket
client.on('data', function(data) {
    
    console.log('DATA: ' + data);
    // Close the client socket completely
    client.destroy();
    
});


здесь - завершается работа, когда приходит из сокета единственный ответ. а мне нужно чтобы эта конструкция закончила работу, когда придет ответ, похожий на некоторую строку-индикатор, например "data-end-recived:1234567890", и вернуть этот ответ в главный модуль программы.
Ответить с цитированием
  #5 (permalink)  
Старый 26.11.2012, 13:16
Аватар для keen
Профессор
Отправить личное сообщение для keen Посмотреть профиль Найти все сообщения от keen
 
Регистрация: 28.03.2012
Сообщений: 376

что значит дождаться ответов?
это ж аякс-запрос, в котором сервер обязательно что-нибудь да ответит.
вешайте и на клиенте, и на сервере обработчики на событие "получение сообщения".
Ответить с цитированием
  #6 (permalink)  
Старый 26.11.2012, 13:44
Аватар для deivan
Профессор
Отправить личное сообщение для deivan Посмотреть профиль Найти все сообщения от deivan
 
Регистрация: 02.08.2012
Сообщений: 293

это понятно, в коде выше у объекта client можно обработать ответы, но как этот ответ клиента вернуть тому, кто вызвал саму функцию связи с сокетом?..
тут получается два вложенных колбэка нужно организовать, а я не могу разобраться в конкретике..
Ответить с цитированием
  #7 (permalink)  
Старый 28.11.2012, 18:32
Аватар для deivan
Профессор
Отправить личное сообщение для deivan Посмотреть профиль Найти все сообщения от deivan
 
Регистрация: 02.08.2012
Сообщений: 293

задачу решил, всем спасибо. подробности - http://hashcode.ru/questions/167952/...BD%D0%B8%D0%B5
тему можно закрывать.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как включить синхронное выполнение строк? SkaN Элементы интерфейса 1 26.04.2012 22:28
Как писать код который легко поддерживать, расширять, читать. Policeman Общие вопросы Javascript 3 24.03.2012 05:40
Как при быстром многократном клике по кнопке обрабатывать только первый клик battrack jQuery 3 22.03.2012 10:47
Как отловить обратное событие "click" ? jsuse Общие вопросы Javascript 2 18.01.2012 00:16
Как сделать электронный каталог продукции? natarius Серверные языки и технологии 6 24.05.2009 20:56